home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / dirent.lha / dirent / rewinddir.c < prev    next >
C/C++ Source or Header  |  1988-09-02  |  788b  |  44 lines

  1. /*
  2.     rewinddir -- rewind a directory stream
  3.  
  4.     last edit:    25-Apr-1987    D A Gwyn
  5.  
  6.     This is not simply a call to seekdir(), because seekdir()
  7.     will use the current buffer whenever possible and we need
  8.     rewinddir() to forget about buffered data.
  9. */
  10.  
  11. #ifdef unos
  12. #include    <errno.h>
  13. #else
  14. #include    <sys/errno.h>
  15. #endif
  16. #include    <sys/types.h>
  17. #include    <dirent.h>
  18.  
  19. extern off_t    lseek();
  20.  
  21. extern int    errno;
  22.  
  23. #ifndef NULL
  24. #define    NULL    0
  25. #endif
  26.  
  27. #ifndef SEEK_SET
  28. #define    SEEK_SET    0
  29. #endif
  30.  
  31. void
  32. rewinddir( dirp )
  33.     register DIR        *dirp;    /* stream from opendir() */
  34. {
  35.     if ( dirp == NULL || dirp->dd_buf == NULL )
  36.         {
  37.         errno = EFAULT;
  38.         return;            /* invalid pointer */
  39.         }
  40.  
  41.     dirp->dd_loc = dirp->dd_size = 0;    /* invalidate buffer */
  42.     (void)lseek( dirp->dd_fd, (off_t)0, SEEK_SET );    /* may set errno */
  43. }
  44.